# 题目 4：按照以下步骤在 PyCharm 中进行自动化测试脚本编写，并执行脚本。
# 测试数据：报废方式编号 报废方式名称 预期结果 F1122331 测试数据 保存成功！
# 步骤 1：新建 csv 格式的测试数据，并编写脚本读取 csv 中的测试数据。
# 步骤 2：
# 1、从 Selenium 中引入 WebDriver；

import time

from selenium import webdriver
# 2、引入 ddt；
# 3、引入 unittest；

# 5、引入步骤 1 中的数据读取的方法；

# 12、在报废管理页面通过 xpath 方法点击新增按钮；
# 13、通过数据驱动输入报废方式和报废方式名称；
# 14、点击保存按钮，并通过 assertEqual 断言方法来验证预期结果和实际结 果是否一致。
from selenium.webdriver.common.by import By


class S_Page:
    # 4、使用 Selenium 模块的 WebDriver 打开谷歌浏览器；
    driver = webdriver.Chrome()
    driver.maximize_window()
    taskId_tuple = (By.XPATH, '//input[@id="taskId"]', '659')
    loginName_tuple = (By.ID, 'loginName', 'xg01')
    password_tuple = (By.NAME, 'password', 'xg01')
    vericode_tuple = (By.XPATH, '//input[@id="vericode"]', 'shtd')
    login_op = [taskId_tuple, loginName_tuple, password_tuple, vericode_tuple]
    ScrapBtn_tuple = (By.LINK_TEXT, '报废方式')
    addBtn_tuple = (By.XPATH, '/html/body/div[2]/div/div[2]/div[2]/div[1]/div/input')
    way_tuple = (By.XPATH, '//input[@id="title"]')
    name_tuple = (By.XPATH, '//input[@id="code"]')
    save_tuple = (By.XPATH, '//*[@id="cboxLoadedContent"]/div/div[3]/a[2]')

    def init(self):
        # 6、在谷歌浏览器中通过 get 方法发送网址打开资产管理系统登录页面；
        self.driver.get('http://192.168.1.251/bsams/front/login.do')
        # 7、增加智能时间等待 30 秒；
        self.driver.implicitly_wait(30)
        # 8、查看登录页面中的用户名输入框元素，通过 id 属性定位用户名输入框， 并输入用户名 sysadmin；
        # 9、查看登录页面中的密码输入框元素，通过 name 属性定位密码输入框，并 输入密码 SysAdmin123；
        # 10、查看登录页面中的登录按钮元素，通过 tag_name 方法定位登录按钮， 使用 click()方法点击登录按钮进入资产管理系统首页；
        self.login()
        self.driver.find_elements_by_tag_name('input')[4].click()
        # 11、在资产管理系统首页查看左侧报废方式按钮元素，通过 link_text 方法 进行定位，使用 click()方法点击报废方式按钮进入报废方式页面；
        self.find_ele(self.ScrapBtn_tuple[0], self.ScrapBtn_tuple[1]).click()

    def add(self, a, b):
        self.find_ele(*self.addBtn_tuple).click()
        time.sleep(1)
        self.find_ele(*self.way_tuple).send_keys(a)
        self.find_ele(*self.name_tuple).send_keys(b)
        self.find_ele(*self.save_tuple).click()
        time.sleep(1)
        text = self.driver.switch_to_alert().text
        self.driver.switch_to_alert().accept()
        return text

    def find_ele(self, *kwy):
        ele = self.driver.find_element(kwy[0], kwy[1])
        return ele

    def login(self):
        for i in self.login_op:
            self.find_ele(i[0], i[1]).send_keys(i[2])

    def quit(self):
        self.driver.close()
